package demo9.test1;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-13
 * Time: 14:53
 */
/*
9.内部类
当一个事物的内部，还有一个部分需要一个完整的结构进行描述，而这个内部的完整的结构又只为外部事物提供服
务，那么这个内部的完整结构最好使用内部类。在 Java 中，可以将一个类定义在另外一个类中或者一个方法的内部中，前者称为内部类，后者外部类。内部类也是封装的一种体现。

public class OutClass {
    class InnerClass{
    }
}

// OutClass是外部类
// InnerClass是内部类

【注意事项】
1. 定义在class类名{}花括号外部的，即使是一个文件中，都不能称为内部类
public class A{
}

class B{
}

//A和B是两个独立的类，彼此没有关系

2.内部类和外部类共用了一个Java源文件，但是经过编译之后，内部类会形成单独的字节码文件
 */
public class OutClass {
    //成员位置定义：未被static修饰 --> 实例内部类
    public class InnerClass1 {

    }
    //成员位置定义：被static修饰 --> 静态内部类
    static class InnerClass2 {

    }

    public void method() {
        //方法也可以定义内部类 --> 局部内部类：几乎不用
        class InnerClass3 {

        }
    }
}

/*
根据内部类定义的位置不同，一般可以分为以下几种形式：
 1. 成员内部类(普通内部类：未被static修饰的成员内部类 和 静态内部u类：被static修饰的成员内部类)
 2. 局部内部类(不谈修饰符)、匿名内部类

注意：内部类其实日常开发使用的不多，大家在看一些库中的代码时候可能会遇到的比较多，日常开始中
使用最多的是匿名内部类。
 */
